package com.jyw.business.de.domain.vo.web;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jyw.business.de.domain.DeDemandInfo;
import com.jyw.common.annotation.Conversion;
import com.jyw.common.annotation.Excel;
import com.jyw.common.constant.SysDictTypeConstant;
import com.jyw.common.core.domain.entity.SysDictType;
import com.jyw.common.enums.ConversionType;
import com.jyw.common.utils.bean.BeanUtils;
import com.jyw.system.domain.vo.SimpleFileVo;
import com.jyw.system.utils.FileUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;

import java.util.Arrays;
import java.util.Date;
import java.util.List;

@ApiModel("需求信息")
@Data
@FieldNameConstants
@NoArgsConstructor
public class DemandInfoVO {


    private static final long serialVersionUID = 1L;

    /** 主键 */
    @ApiModelProperty("主键")
    private Long id;

    /** 需求编码 */
    @ApiModelProperty("需求编码")
    private String demandCode;

    /** 需求标题 */
    @ApiModelProperty("需求标题")
    private String demandTitle;

    /** 需求类型 */
    @ApiModelProperty("需求类型")
    @Conversion(value = ConversionType.DICT,dictType = SysDictTypeConstant.DE_DEMAND_TYPE)
    private String demandType;

    @ApiModelProperty("需求类型名称")
    private String demandTypeToName;

    /** 需求描述 */
    @ApiModelProperty("需求描述")
    private String demandRemark;

    /** 涉及系统(数据字典多选) */
    @ApiModelProperty("涉及系统(数据字典多选)")
    @Conversion(value = ConversionType.DICT,dictType = SysDictTypeConstant.OBS_ABOUT_SYSTEM)
    private List<String> demandSystem;

    @ApiModelProperty("涉及系统名称")
    private List<String> demandSystemToName;

    /** 附件 */
    @ApiModelProperty("附件")
    private List<SimpleFileVo> demandEnclosure;

    /** 状态 */
    @ApiModelProperty("状态")
    @Conversion(value = ConversionType.DICT,dictType = SysDictTypeConstant.DE_DEMAND_STATE)
    private String demandState;

    @ApiModelProperty("状态名称")
    private String demandStateToName;

    /** 需求负责人 */
    @ApiModelProperty("需求负责人")
    @Conversion(value = ConversionType.USER,name = Fields.demandUserName)
    private Long demandUser;

    @ApiModelProperty("负责人名称")
    private String demandUserName;

    /** 需求进度(整数0-100) */
    @ApiModelProperty("需求进度(整数0-100)")
    private Integer demandProcess;

    /** 工单来源(OA,工单升级,新增需求) */
    @ApiModelProperty("工单来源(OA,工单升级,新增需求)")
    private String demandSource;

    /** 提出日期 */
    @ApiModelProperty("提出日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date submitDate;

    /** 创建人(OA推送应该没有,新增需求才会有) */
    @ApiModelProperty("创建人(OA推送应该没有,新增需求才会有)")
    @Conversion(value = ConversionType.USER,name = Fields.createUserName)
    private Long createUser;

    /** 创建人(OA推送应该没有,新增需求才会有) */
    @ApiModelProperty("创建人名称")
    private String createUserName;

    /** 创建时间 */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    private List<DemandInfoSubVO> subInfo;

    public DemandInfoVO(DeDemandInfo info) {
        BeanUtils.copyProperties(info,this);
        setDemandSystem(Arrays.asList(info.getDemandSystem().split(",")));
        setDemandEnclosure(FileUtils.IdToFile(info.getDemandEnclosure()));
    }
}
